package com.xiaolin.algorithm.search.binary;

/**
 * @ClassName BinarySearch
 * @Description 二分查找
 * @Detail 要求数组有序
 * @Author MyPC
 * @Date 2020/11/17
 * @Version 1.0
 */
public class BinarySearch {

    /**
     * 二分查找
     * @param arr
     * @param ele
     * @return
     */
    public int search(int[] arr,int ele){
        return search(arr,0,arr.length-1,ele);
    }

    /**
     * 递归查找元素
     * @param arr
     * @param first
     * @param last
     * @param ele
     * @return
     */
     private int search(int[] arr,int first,int last,int ele){
         // 递归头
        if(first>last){
            return -1;
        }
        int mid=(first+last)/2;
        if(arr[mid] == ele){
            // 元素相等
            return mid;
        }else if(arr[mid] > ele){
            // 元素可能在左边
            return search(arr,first,mid-1,ele);
        }else {
            // 元素可能在右边
            return search(arr,mid+1,last,ele);
        }
     }
}
